home *** CD-ROM | disk | FTP | other *** search
/ PC go! 2018 January / PCgo 01-2018 CD-ROM Germany.iso / nw.pak / Unnamed File 004869.txt < prev    next >
Encoding:
Text File  |  2015-07-29  |  3.5 KB  |  100 lines

  1. // Copyright 2014 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4.  
  5. define("mojo/public/js/bindings", [
  6.   "mojo/public/js/router",
  7. ], function(router) {
  8.  
  9.   var Router = router.Router;
  10.  
  11.   var kProxyProperties = Symbol("proxyProperties");
  12.   var kStubProperties = Symbol("stubProperties");
  13.  
  14.   // Public proxy class properties that are managed at runtime by the JS
  15.   // bindings. See ProxyBindings below.
  16.   function ProxyProperties(receiver) {
  17.     this.receiver = receiver;
  18.   }
  19.  
  20.   ProxyProperties.prototype.getLocalDelegate = function() {
  21.     return this.local && StubBindings(this.local).delegate;
  22.   }
  23.  
  24.   ProxyProperties.prototype.setLocalDelegate = function(impl) {
  25.     if (this.local)
  26.       StubBindings(this.local).delegate = impl;
  27.     else
  28.       throw new Error("no stub object");
  29.   }
  30.  
  31.   // Public stub class properties that are managed at runtime by the JS
  32.   // bindings. See StubBindings below.
  33.   function StubProperties(delegate) {
  34.     this.delegate = delegate;
  35.   }
  36.  
  37.   // The base class for generated proxy classes.
  38.   function ProxyBase(receiver) {
  39.     this[kProxyProperties] = new ProxyProperties(receiver);
  40.  
  41.     // TODO(hansmuller): Temporary, for Chrome backwards compatibility.
  42.     if (receiver instanceof Router)
  43.       this.receiver_ = receiver;
  44.   }
  45.  
  46.   // The base class for generated stub classes.
  47.   function StubBase(delegate) {
  48.     this[kStubProperties] = new StubProperties(delegate);
  49.   }
  50.  
  51.   // Provides access to properties added to a proxy object without risking
  52.   // Mojo interface name collisions. Unless otherwise specified, the initial
  53.   // value of all properties is undefined.
  54.   //
  55.   // ProxyBindings(proxy).connection - The Connection object that links the
  56.   //   proxy for a remote Mojo service to an optional local stub for a local
  57.   //   service. The value of ProxyBindings(proxy).connection.remote == proxy.
  58.   //
  59.   // ProxyBindings(proxy).local  - The "local" stub object whose delegate
  60.   //   implements the proxy's Mojo client interface.
  61.   //
  62.   // ProxyBindings(proxy).setLocalDelegate(impl) - Sets the implementation
  63.   //   delegate of the proxy's client stub object. This is just shorthand
  64.   //   for |StubBindings(ProxyBindings(proxy).local).delegate = impl|.
  65.   //
  66.   // ProxyBindings(proxy).getLocalDelegate() - Returns the implementation
  67.   //   delegate of the proxy's client stub object. This is just shorthand
  68.   //   for |StubBindings(ProxyBindings(proxy).local).delegate|.
  69.  
  70.   function ProxyBindings(proxy) {
  71.     return (proxy instanceof ProxyBase) ? proxy[kProxyProperties] : proxy;
  72.   }
  73.  
  74.   // Provides access to properties added to a stub object without risking
  75.   // Mojo interface name collisions. Unless otherwise specified, the initial
  76.   // value of all properties is undefined.
  77.   //
  78.   // StubBindings(stub).delegate - The optional implementation delegate for
  79.   //  the Mojo interface stub.
  80.   //
  81.   // StubBindings(stub).connection - The Connection object that links an
  82.   //   optional proxy for a remote service to this stub. The value of
  83.   //   StubBindings(stub).connection.local == stub.
  84.   //
  85.   // StubBindings(stub).remote - A proxy for the the stub's Mojo client
  86.   //   service.
  87.  
  88.   function StubBindings(stub) {
  89.     return stub instanceof StubBase ?  stub[kStubProperties] : stub;
  90.   }
  91.  
  92.   var exports = {};
  93.   exports.EmptyProxy = ProxyBase;
  94.   exports.EmptyStub = StubBase;
  95.   exports.ProxyBase = ProxyBase;
  96.   exports.ProxyBindings = ProxyBindings;
  97.   exports.StubBase = StubBase;
  98.   exports.StubBindings = StubBindings;
  99.   return exports;
  100. });